﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace MetaCollection.Framework.Model
{
	public interface IItemAudit
	{
		/// <summary>
		/// Gets or sets the id.
		/// </summary>
		/// <value>The id.</value>
		Guid Id { get; set; }

		/// <summary>
		/// Gets or sets the item id.
		/// </summary>
		/// <value>The item id.</value>
		Guid ItemId { get; set; }

		/// <summary>
		/// Gets or sets the item version.
		/// </summary>
		/// <value>The item version.</value>
		int ItemVersion { get; set; }

		/// <summary>
		/// Gets or sets the event date.
		/// </summary>
		/// <value>The event date.</value>
		DateTime EventDate { get; set; }

		/// <summary>
		/// Gets or sets the type of the event.
		/// </summary>
		/// <value>The type of the event.</value>
		string EventType { get; set; }

		/// <summary>
		/// Gets or sets the message.
		/// </summary>
		/// <value>The message.</value>
		string Message { get; set; }		 
	}

	[Serializable()]
	public struct ItemEvent : IItemAudit
	{

		/// <summary>
		/// Gets or sets the id.
		/// </summary>
		/// <value>The id.</value>
		public Guid Id { get; set; }

		/// <summary>
		/// Gets or sets the item id.
		/// </summary>
		/// <value>The item id.</value>
		public Guid ItemId { get; set; }

		/// <summary>
		/// Gets or sets the item version.
		/// </summary>
		/// <value>The item version.</value>
		public int ItemVersion { get; set; }

		/// <summary>
		/// Gets or sets the event date.
		/// </summary>
		/// <value>The event date.</value>
		public DateTime EventDate { get; set; }

		/// <summary>
		/// Gets or sets the type of the event.
		/// </summary>
		/// <value>The type of the event.</value>
		public string EventType { get; set; }

		/// <summary>
		/// Gets or sets the message.
		/// </summary>
		/// <value>The message.</value>
		public string Message { get; set; }		 
	}
}
